home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import urllib
-
- def _urlquote(x):
- q = urllib.quote(x)
- for c in [
- '/',
- '@',
- ':']:
- q = q.replace(c, '%%%02X' % ord(c))
-
- return q
-
-
- class SMBURI:
-
- def __init__(self, uri = None, group = '', host = '', share = '', user = '', password = ''):
- if uri:
- if group and host and share and user or password:
- raise RuntimeError
- password
- if uri.startswith('smb://'):
- uri = uri[6:]
-
- self.uri = uri
- else:
- self.uri = self._construct(group, host, share, user = user, password = password)
-
-
- def _construct(self, group, host, share, user = '', password = ''):
- uri_password = ''
- if password:
- uri_password = ':' + _urlquote(password)
-
- if user:
- uri_password += '@'
-
- uri = '%s%s%s' % (_urlquote(user), uri_password, _urlquote(group))
- if len(group) > 0:
- uri += '/'
-
- uri += _urlquote(host)
- if len(share) > 0:
- uri += '/' + _urlquote(share)
-
- return uri
-
-
- def get_uri(self):
- return self.uri
-
-
- def sanitize_uri(self):
- (group, host, share, user, password) = self.separate()
- return self._construct(group, host, share)
-
-
- def separate(self):
- uri = self.get_uri()
- user = ''
- password = ''
- auth = uri.find('@')
- if auth != -1:
- u = uri[:auth].find(':')
- if u != -1:
- user = uri[:u]
- password = uri[u + 1:auth]
- else:
- user = uri[:auth]
- uri = uri[auth + 1:]
-
- sep = uri.count('/')
- group = ''
- if sep == 2:
- g = uri.find('/')
- group = uri[:g]
- uri = uri[g + 1:]
-
- if sep < 1:
- host = ''
- else:
- h = uri.find('/')
- host = uri[:h]
- uri = uri[h + 1:]
- p = host.find(':')
- if p != -1:
- host = host[:p]
-
- share = uri
- return (urllib.unquote(group), urllib.unquote(host), urllib.unquote(share), urllib.unquote(user), urllib.unquote(password))
-
-
-